package com.example.tys.baseapplication.DataModel.data;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;


import java.util.List;

/**
 *
 * @author Tys
 * @date 2017/1/27
 */

public interface IDaoOperation<T> {

    long insert(@NonNull T obj);

    void insert(@NonNull List<T> objs);

    /**
     * @param andOr     and 或者 or
     * @param whereArgs 条件 (不同数据库条件表现形式不同) greenDao : WhereCondition
     * @param offset    偏移
     * @param limit     返回最大个数
     * @param order     asc 或 desc
     * @param filed     排序字段(不同数据库字段表现形式不同)greenDao : Properties
     * @return 查询结果
     */
    List<T> query(@Nullable String andOr, @Nullable Object[] whereArgs, @Nullable Integer offset,
                  @Nullable Integer limit, @Nullable String order, @Nullable Object... filed);

    /**
     * @param andOr
     * @param whereArgs
     * @return 满足条件的唯一结果或者null
     */
    T uniqueQuery(@Nullable String andOr, @NonNull Object[] whereArgs);

    void update(@NonNull T newObj);

    void delete(@NonNull T obj);

    void deleteAll();


}
